package com.yifeng.repo.micro.service.server.engine.configure;

import com.yifeng.repo.base.mdm.loader.param.MdmAopProperties;
import com.yifeng.repo.base.params.BizCacheParam;
import com.yifeng.repo.base.params.ConsoleParam;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;

/**
 * Created by daibing on 2024/2/27.
 */
@Data
@ConfigurationProperties(prefix = ServerEngineMasterProperties.PREFIX)
public class ServerEngineMasterProperties {

    public static final String PREFIX = "yfcloud.micro.service.engine.master";

    /**
     * 是否启用微引擎标准组件
     */
    private boolean enabled = true;

    /**
     * 是否启用redis，如果启用鉴权就需要启用redis
     */
    private boolean enableRedis = true;

    /**
     * 是否启用通过redis分配雪花算法的workerId（0 ~ 31）
     */
    private boolean enableWorkerIdByRedis = true;

    /**
     * 是否启用通过redis做GeoHash计算
     */
    private boolean enableGeoByRedis = false;

    /**
     * 是否启用基础主数据
     */
    private boolean enableBdsMdm = true;

    /**
     * 是否启用账号主数据
     */
    private boolean enableAccountMdm = true;

    /**
     * 是否启用主数据的全量数据（内存）
     */
    private boolean enableMdmFullData = false;

    /**
     * 是否启用标准基础服务
     */
    private boolean enableBaseService = false;

    /**
     * 主数据AOP缓存配置
     */
    @NestedConfigurationProperty
    private MdmAopProperties mdmAopProperties;

    /**
     * 业务二级缓存配置：security模块使用
     */
    @NestedConfigurationProperty
    private BizCacheParam bizCacheParam;

    /**
     * 账号中心的Console配置
     */
    @NestedConfigurationProperty
    private ConsoleParam accountConsoleParam;

    /**
     * 基础数据服务的Console配置（包括门店主数据）
     */
    @NestedConfigurationProperty
    private ConsoleParam bdsConsoleParam;

    /**
     * 会员中心的Console配置
     */
    @NestedConfigurationProperty
    private ConsoleParam customerConsoleParam;

    /**
     * 供应链的Console配置
     */
    @NestedConfigurationProperty
    private ConsoleParam supplyConsoleParam;

    /**
     * 消息中心的Console配置
     */
    @NestedConfigurationProperty
    private ConsoleParam mcsConsoleParam;

    /**
     * MQTT代理的Console配置
     */
    @NestedConfigurationProperty
    private ConsoleParam mqttConsoleParam;

}
